package com.gary;

/**
 * 示例 1：
 *
 * 输入：nums = [1,1,2]
 * 输出：2, nums = [1,2,_]
 * 解释：函数应该返回新的长度 2 ，并且原数组 nums 的前两个元素被修改为 1, 2 。不需要考虑数组中超出新长度后面的元素。
 *
 * 示例 2：
 *
 * 输入：nums = [0,0,1,1,1,2,2,3,3,4]
 * 输出：5, nums = [0,1,2,3,4]
 * 解释：函数应该返回新的长度 5 ， 并且原数组 nums 的前五个元素被修改为 0, 1, 2, 3, 4 。不需要考虑数组中超出新长度后面的元素。
 *
 * @author peng_rui
 * @date 2022/3/1
 */
public class RemoveDuplicates {
    public static void main(String[] args) {
        int[] nums = new int[]{0,0,1,1,1,2,2,3,3,4,5,6};
        int i = removeDuplicates(nums);
        System.out.println(i);
        for (int j = 0; j < nums.length; j++) {
            System.out.print(nums[j] + " ");
        }
    }

    public static int removeDuplicates(int[] nums) {
        int[] stack = new int[nums.length];
        int top = 0;
        stack[0] = nums[0];
        for (int i = 1; i < nums.length; i++) {
           if (nums[i] != stack[top]) {
               top++;
               stack[top] = nums[i];
           }
        }
        for (int i = 0; i < top + 1; i++) {
            nums[i] = stack[i];
        }
        return top + 1;
    }
}
